﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace FGK
{
    class Plaszczyzna : Obiekt
    {
        private Wektor wektorn;
        private float d;

        public Plaszczyzna(float x1, float y1, float z1, float d1)
        {
            wektorn = new Wektor(x1, y1, z1);
            wektorn.normalize();
            d = d1;
        }

        public Plaszczyzna(Wektor w1, float d1)
        {
            wektorn = w1;
            d = d1;
        }

        public override Wektor[] brylaOtaczajaca()
        {
            Wektor[] wierzcholki = new Wektor[2];
            return wierzcholki;
        }

        public float D
        {
            get { return d; }
            set { d = value; }
        }

        public Wektor WektorN
        {
            get { return wektorn; }
            set { wektorn = value; }
        }

        public override int IlePrzeciec(Promien p)
        {
            float od = wektorn.dot( p.Kierunek);
            if (od != 0)
            {
                float dist = -(wektorn.dot( p.Start) + D) / od;
                if (dist > 0)
                {
                    if (dist > 0)
                    {
                        p.setOdleglosc(this, dist);
                        return 1;
                    }
                }
            }
            return 0;
        }

        public override string ToString()
        {
            return "Płaszczyzna(" + wektorn.X + "," + wektorn.Y + "," + wektorn.Z + " , " + d + ")";
        }

        public override Kolor texDiff(Wektor kolizja)
        {
            //kolizja = kolizja;
            return material.Diffuse;
            //return k;
        }

        public override Wektor normalna(Wektor punkt)
        {
            return wektorn;
        }
    }
}
